﻿using System.Collections.Generic;
using System.Security.Claims;

namespace Sustainalytics.Claims.BL
{
    public class ExtendedClaimsComparer : IEqualityComparer<Claim>
    {
        public bool Equals(Claim claimA, Claim claimB)
        {
            return (claimA.Value.ToLowerInvariant() == claimB.Value.ToLowerInvariant()
                && claimA.Issuer.ToLowerInvariant() == claimB.Issuer.ToLowerInvariant()
                && claimA.ValueType.ToLowerInvariant() == claimB.ValueType.ToLowerInvariant()
                && claimA.Type.ToLowerInvariant() == claimB.Type.ToLowerInvariant());
        }

        public int GetHashCode(Claim claim)
        {
            string concat = claim.Value.ToLowerInvariant() + claim.Type.ToLowerInvariant() + claim.ValueType.ToLowerInvariant() + claim.Issuer.ToLowerInvariant();

            return concat.GetHashCode();
        }
    }
}
